Cloud computing is a form of distributed computing over a network, with the ability to run a program on many connected computers at the same time. The same concept is also used for private storage. Such distributed computing is directed to running applications that share data or support the critical operations of an enterprise, with rapid access to flexible and low cost IT resources. These services are based on-demand delivery of IT resources via the Internet with pay-as-you-go pricing, and are offered by several vendors such as Microsoft and Amazon Web Services. However, the cloud computing model cannot really protect user's privacy, since the user cannot be sure that there will be no leakage of some data, on which he has no control.
Information theoretically secure multi-party computation implies severe communication overhead among the computing participants, as there is a need to reduce the polynomial degree after each multiplication. In particular, when the input is (practically) unbounded, the number of multiplications and therefore, the communication bandwidth among the participants may be practically unbounded. In some scenarios, the communication among the participants should better be avoided altogether, avoiding linkage among the secret share holders. For example, when processes in computing clouds operate over streaming secret shares without communicating with each other, they can actually hide their linkage and activity in the cloud. An adversary that is able to compromise processes in the cloud may need to capture and analyze a very large number of possible shares.
If a dealer wants to repeatedly compute functions on a long file with the assistance of in servers, the dealer does not wish to leak either the input file or the result of the computation to any of the servers. There are two constraints: (1) The dealer is allowed to share each symbol of the input file among the servers and is allowed to halt the computation at any point (the dealer is otherwise stateless). (2) each server is not allowed to establish any communication beyond the shares of the inputs that it receives and the information it provides to the dealer during reconstruction.
Secure multi-party computation (MPC) is a powerful concept in secure distributed computing. The goal of secure MPC is to enable a set of in mutually distrusting parties to jointly and securely compute a function ƒ of their private inputs, even in the presence of a computationally unbounded active adversary Adv. For example, two millionaires can compute which one is richer, without revealing their actual worth. In secure MPC, two or more parties want to conduct a computation based on their private inputs, but neither party is willing to disclose its own input to anybody else.
Secure multi-party computation participants can compute any function on any input, in a distributed network where each participant holds one of the inputs, ensuring independence of the inputs, correctness of the computation, and that no information is revealed to a participant in the computation beyond the information that can be inferred from that participants' input and output. Like other cryptographic protocols, the security of MPC protocol can rely on different assumptions:                It can be computational, namely, based on the common belief on the complexity of mathematical tasks such as factoring, or information theoretically secure which is unconditional secure, and usually based on secret sharing schemes.        The settings in which the scheme is described may differ, possibly assuming that participants use a synchronized network, that a secure and reliable broadcast channel exists, that a secure communication channel exists between every pair of participants, such that an adversary cannot tap-in, modify or generate messages in the channel, and alike.        
Secure multi-party computation can be realized in various settings for computing general functions. However, the general scheme may be impractical due to efficiency reasons, partly due to the communication required among the participants.
In communicationless information theoretically secure multi-party computation over long input streams, a dealer D may secretly share an initial value among the in servers (participants). Subsequently, the dealer is responsible for handling the input stream (or an input file) and distributing appropriate shares to the participants. If the dealer is assumed to be a stateless dealer, the dealer is allowed to temporarily store the current input to the system, process the input and send (not necessarily simultaneously) secret shares of the inputs to the participants. One of the participants may act as the dealer, or the participants may alternate among themselves in serving as the dealer. In such a case, one participant communicates with the rest to convey the input (shares), still the inherent quadratic complexity needed to reduce the polynomial degree in the classical information theoretically secure multi-party computation should be avoided. Moreover, in case the input symbols have been shared and assigned to the participants in the initialization phase, every participant can independently (and asynchronously) process the shares of the input, and sends the result when the global output has to be determined. For example, assigning shares of a file up-front to participants to allow repeated search of patterns, without revealing neither the file nor the search result to the participants. No participant returns any information back during the execution of the algorithm. At any point in the execution, the dealer may ask some participants to send their results back, then the dealer can reconstruct the actual result of the algorithm.